package lz.controls.events
{

	import flash.events.Event;

	/**
	 * ScrollEvent 类定义与 ScrollBar 组件关联的滚动事件。
	 */
	public class ScrollEvent extends Event
	{
		/**
         * 滚动
		 */
		public static const SCROLL:String = "scroll";
        /**
         * 与事件关联的移动方向。
         */
        private var _direction:String;
        /**
         * 滚动位置的更改大小（以像素为单位）。
         */
        private var _delta:Number;
        /**
         * 当前的滚动位置（以像素为单位）。
         */
		private var _position:Number;
		/**
		 * 使用指定的参数创建新的 ScrollEvent 对象。
		 * 参数
		 * direction:String — 与事件关联的移动方向。ScrollBarDirection.HORIZONTAL 值指示水平移动；ScrollBarDirection.VERTICAL 值指示垂直移动。
		 * delta:Number — 滚动位置的更改（以像素为单位）。正值指示滚动方向为向下或向右。负值指示滚动方向为向上或向左。
		 * position:Number — 当前滚动位置。
		 */
		public function ScrollEvent(direction:String, delta:Number, position:Number) 
		{
			super(ScrollEvent.SCROLL,false,false);
			_direction = direction;
			_delta = delta;
			_position = position;
		}

		/**
         * 获取一个常量值，该值指示与事件关联的移动方向。
		 * ScrollBarDirection.HORIZONTAL 值指示水平移动；
		 * ScrollBarDirection.VERTICAL 值指示垂直移动。
		 */
		public function get direction():String 
		{
			return _direction;
		}
		/**
		 * 获取滚动位置的更改大小（以像素为单位）。
		 * 正值指示滚动方向为向下或向右。
		 * 负值指示滚动方向为向上或向左。
		 */
		public function get delta():Number
		{
			return _delta;
		}
		/**
         * 获取当前的滚动位置（以像素为单位）。
		 */
		public function get position():Number 
		{
			return _position;
		}
		/**
		 * 返回一个字符串，其中包含 ScrollEvent 对象的所有属性。
		 */
		override public function toString():String
		{
			return formatToString("ScrollEvent", "type", "bubbles", "cancelable", "direction", "delta", "position");
		}
		/**
		 * 创建 ScrollEvent 对象的副本，并设置每个参数的值以匹配原始参数值。
		 */
		override public function clone():Event 
		{
			return new ScrollEvent(_direction, _delta, _position);
		}
	}
}
